﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Disk_Pizza_Admin
{
    public partial class frmVendasAtiva : Form
    {
        public frmVendasAtiva()
        {
            InitializeComponent();
        }
        OleDbConnection conexao;
        OleDbDataAdapter adapter;
        DataSet ds;
        OleDbCommand comando;

        private void frmVendasAtiva_Load(object sender, EventArgs e)
        {
            carregaGrid();
        }
        private void carregaGrid()
        {
            conexao = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ Application.StartupPath +@"\database.mdb");
            string sql = "";
            sql = sql + " SELECT pr.Produto, p.Codigo, c.nome, c.telefone, c.endereco,c.numero,c.complemento,c.bairro, p.DataPedido, p.CodigoEntregador , SUM(ip.ValorTotal) as total";
             sql = sql + " from tblPedido p, tblCliente c, tblitempedido ip, tblproduto pr";
             sql = sql + " where ";
             sql = sql + " c.codigo = p.CodigoCliente";
             sql = sql + " and p.Codigo = ip.CodigoPedido";
             sql = sql + " and pr.Código = ip.CodigoProduto";
             sql = sql + " and p.Situacao = 'PEDIDO ATIVO'";
             sql = sql + " group by p.Codigo, c.nome, c.telefone, c.endereco,c.numero,c.complemento,c.bairro, p.DataPedido, pr.Produto, p.CodigoEntregador";
             sql = sql + " order by p.DataPedido desc";

            adapter = new OleDbDataAdapter(sql, conexao);
            ds = new DataSet();
            adapter.Fill(ds, "tblMaterial");

            gridVendas.DataSource = ds.Tables["tblMaterial"];
        }

        private void gridVendas_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                string codigo_material = Convert.ToString(gridVendas.Rows[e.RowIndex].Cells["codigo"].Value);

                if (!(codigo_material.Trim().Equals("")))
                {
                    preencheCamposMaterial(codigo_material);
                }
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
            }
        }

        private void preencheCamposMaterial(string oCodigo_material)
        {
            conexao = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ Application.StartupPath +@"\database.mdb");
            try
            {
                string sql = "";
                sql = sql + "    SELECT        p.situacao, pr.produto ";
                sql = sql + "    FROM            tblPedido p, tblItempedido ip, tblProduto pr";
                sql = sql + "    WHERE p.codigo = ip.codigopedido and ip.codigoproduto = pr.código and  p.Codigo = " + Convert.ToInt32(oCodigo_material) + "";

                comando = new OleDbCommand();
                comando.Connection = conexao;
                comando.CommandText = sql;

                conexao.Open();
                comando.CommandType = CommandType.Text;
                OleDbDataReader reader = comando.ExecuteReader();
                if (reader.HasRows)
                {
                    //Preenche os dados e retorna true
                    reader.Read();
                    this.txtNomeMaterial.Text = reader["produto"].ToString();
                    this.txtSituacao.Text = reader["situacao"].ToString();
                    lblNumeroPedido.Text = oCodigo_material;
                }
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
            }
            finally
            {
                conexao.Close();
            }
        }

        private void btnAdiconarPedido_Click(object sender, EventArgs e)
        {
            if (!(lblNumeroPedido.Text.Trim().Equals("")))
            {
                if (!(txtSituacao.Text.Trim().Equals("")))
                {
                    string sql = "UPDATE tblPedido set Situacao = '" + txtSituacao.Text.Trim() + "', MotivoCanc = '" + txtCancelamento.Text.Trim() + "' where codigo = " + Convert.ToInt32(lblNumeroPedido.Text) + " ";
                    executaQuery(sql); 
                    limparCampos();
                    MessageBox.Show("Dados Atualizados!");
                    carregaGrid();                    
                }
            }
        }

        private void limparCampos()
        {
            txtNomeMaterial.Text = "";
            txtSituacao.Text = "";
            lblNumeroPedido.Text = "";
        }

        private void executaQuery(string consulta)
        {
            conexao = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ Application.StartupPath +@"\database.mdb");
            string sql = consulta;

            comando = new OleDbCommand();
            comando.Connection = conexao;
            comando.CommandText = sql;
            try
            {
                conexao.Open();
                comando.ExecuteNonQuery();
                ds.AcceptChanges();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro ao fazer a operação! " + ex.Message.ToString());
            }
            finally
            {
                conexao.Close();
            }
        }

        private void txtSituacao_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (txtSituacao.Text.Trim().Equals("PEDIDO CANCELADO"))
            {
                gbxCancelamento.Visible = true;

            }
            else
            {
                gbxCancelamento.Visible = false;
            }
        }
    }
}
